#include <stdio.h>
#include <stdlib.h>
#include "linklist.h"

int main(void){
// 创建一个空的单向链表
    link_node_t *list = CreateEpLinkList();
    if (list == NULL)
    {
        printf("链表创建失败！\n");
        return 1;
    }

// 向链表中插入数据
    InsertIntoPostLinkList(list, 0, 10);
    InsertIntoPostLinkList(list, 1, 20);
    InsertIntoPostLinkList(list, 2, 30);
    InsertIntoPostLinkList(list, 3, 20);
    InsertIntoPostLinkList(list, 4, 20);
    InsertIntoPostLinkList(list, 5, 60);
    InsertIntoPostLinkList(list, 6, 70);




// 打印链表
    printf("链表:\n");
    ShowLinkList(list);

// 求链表长度
    int length = LengthLinkList(list);
    printf("长度: %d\n", length);

// 删除链表中指定位置的数据
    DeletePostLinkList(list, 2);

// 打印链表
    printf("删除后的链表:\n");
    ShowLinkList(list);
    

// 判断链表是否为空
    int empty = IsEpLinkList(list);
    printf("1空  0非空: %d\n", empty);

// 修改指定位置的数据
    ChangePostLinkList(list, 2, 40);

// 打印链表
    printf("修改后的链表:\n");
    ShowLinkList(list);
    

// 查找指定数据出现的位置
    printf("30的位置:");
    SearchDataLinkList(list, 30);
    printf("40的位置:%d\n",SearchDataLinkList(list, 40));
    
    

// 删除链表中出现的指定数据
    DeleteDataLinkList(list, 20);

// 打印链表
    printf("删除全部数据为20节点后的链表:\n");
    ShowLinkList(list);

// 转置链表
    ReverseLinkList(list);

// 打印链表
    printf("转置后的链表:\n");
    ShowLinkList(list);
    

// 清空链表
    ClearLinkList(list);

// 打印链表
    printf("清空后的链表:\n");
    ShowLinkList(list);
// 判断链表是否为空
    empty = IsEpLinkList(list);
    printf("1空  0非空: %d\n", empty);

    return 0;
}